Linux 进程与线程四(加锁

您所在的位置:网站首页 跨进程锁 linux Linux 进程与线程四(加锁

Linux 进程与线程四(加锁

2024-07-06 21:13| 来源: 网络整理| 查看: 265

互斥(mutex)是相互排斥的意思,它是一种锁或者信号灯。 互斥用来保护多个线程共享的数据和结构不会被同事修改,一个互斥锁只能有两个状态 --locked 加锁 --unlocked 解锁 加锁后互斥不让其他线程访问。 任何时刻只能有一个线程来掌握某个互斥上锁。 锁操作是一个原子操作 一个线程如果试图在一个已经加锁的互斥上再加锁,这个线程会被挂起,,直到加锁的线程释放掉互斥锁为止。 强调:加锁解锁针对的是pthread_mutex_t类型的变量,只要有一个地方加锁,哪怕在别的线程中有加锁代码,那个线程也会被挂起,只有当pthread_mutex_t类型的变量解锁后,其他的线程才可以继续对pthread_mutex_t类型的变量加锁。 注意:互斥情况下,如果将某个正在加锁占用资源的进程用pthread_cancel函数取消掉,可能产生死锁。

pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;int pthread_mutex_lock(pthread_mutex_t *mutex);int pthread_mutex_unlock(pthread_mutex_t *mutex);PTHREAD_MUTEX_INITIALIZER是初始化一个快速锁的宏定义。pthread_mutex_lock用户给mutex加锁。pthread_mutex_unlock用于给mutex解锁



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3